package com.sunny.m2;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        int n,k,t;
        HashMap<Integer, Integer> map = new HashMap<>();
        HashSet<Integer> rset = new HashSet<>();
        int res = 0;
        Scanner scanner = new Scanner(System.in);

        n = scanner.nextInt();
        k = scanner.nextInt();
        t = scanner.nextInt();

        int[] data = new int[n];

        for(int i=0;i<n;i++){
            data[i] =scanner.nextInt();
        }

        if(n < k || k < t){
            System.out.println(0);
            return;
        }

        for(int i=0;i<k;i++){
            if(map.containsKey(data[i])){
                map.put(data[i], map.get(data[i])+1);
            }else{
                map.put(data[i], 1);
            }
        }

        boolean flag = false;
        for(Map.Entry<Integer, Integer> entry: map.entrySet()){
            if(entry.getValue() >= t){
                rset.add(entry.getKey());
                flag = true;
            }
        }
        if(flag)
            res++;

        for(int i=k;i<n;i++){
            int rem = data[i-k];
            int ad = data[i];
            if(map.get(rem) == t){
                rset.remove(rem);
            }
            map.put(rem, map.get(rem)-1);
            if(map.containsKey(ad) && map.get(ad) + 1 >= t){
                rset.add(ad);
            }
            if(map.containsKey(ad)){
                map.put(ad, map.get(ad)+1);
            }else{
                map.put(ad, 1);
            }
            if(!rset.isEmpty()){
                res++;
            }
        }
        System.out.println(res);

    }

}
